package com.openvas.service.impl;

import java.util.List;

import com.openvas.exception.ErrorInfo;
import com.openvas.exception.MyException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.openvas.mapper.TableTaskMapper;
import com.openvas.domain.TableTask;
import com.openvas.service.ITableTaskService;
import com.openvas.commons.common.core.text.Convert;

/**
 * 扫描任务Service业务层处理
 * 
 * @author ruoyi
 * @date 2021-11-04
 */
@Service
public class TableTaskServiceImpl implements ITableTaskService 
{
    @Autowired
    private TableTaskMapper tableTaskMapper;

    /**
     * 查询扫描任务
     * 
     * @param taskId 扫描任务主键
     * @return 扫描任务
     */
    @Override
    public TableTask selectTableTaskByTaskId(String taskId)
    {
        return tableTaskMapper.selectTableTaskByTaskId(taskId);
    }

    /**
     * 查询扫描任务列表
     * 
     * @param tableTask 扫描任务
     * @return 扫描任务
     */
    @Override
    public List<TableTask> selectTableTaskList(TableTask tableTask)
    {

        return tableTaskMapper.selectTableTaskList(tableTask);
    }

    /**
     * 新增扫描任务
     * 
     * @param tableTask 扫描任务
     * @return 结果
     */
    @Override
    public int insertTableTask(TableTask tableTask)
    {
        /*
            1、新增扫描任务，首先需要判断此用户的task的名称是否重复（在我们的数据库里查询），如果重复则添加失败
            2、名称不重复，则通过后面的方法，用命令行的方式将此数据存入至Linux的openvas中，如果成功了，再添加数据到我们的数据库中
         */
        String taskName = tableTask.getTaskName();
        if (taskName==null || taskName.isEmpty()){
            throw new MyException(ErrorInfo.TASK_NAME_NULL);
        }
        tableTaskMapper.selectTableTaskByTaskName(taskName);
        int i = tableTaskMapper.insertTableTask(tableTask);
        return i;
    }

    /**
     * 修改扫描任务
     * 
     * @param tableTask 扫描任务
     * @return 结果
     */
    @Override
    public int updateTableTask(TableTask tableTask)
    {
        return tableTaskMapper.updateTableTask(tableTask);
    }

    /**
     * 批量删除扫描任务
     * 
     * @param taskIds 需要删除的扫描任务主键
     * @return 结果
     */
    @Override
    public int deleteTableTaskByTaskIds(String taskIds)
    {
        return tableTaskMapper.deleteTableTaskByTaskIds(Convert.toStrArray(taskIds));
    }

    /**
     * 删除扫描任务信息
     * 
     * @param taskId 扫描任务主键
     * @return 结果
     */
    @Override
    public int deleteTableTaskByTaskId(String taskId)
    {
        return tableTaskMapper.deleteTableTaskByTaskId(taskId);
    }
}
